#include "Cabina.h"
#include <GL/glut.h>

Cabina::Cabina(void){
	this->camara = 0;
}


Cabina::~Cabina(void){

}

void Cabina::dibujarJuntura()
	{
	glPushMatrix();
	glScalef(CABINA_H+VENTANA_H, (CABINA_W-VENTANA_W)/2, (CABINA_W-VENTANA_W)/2);
	glutSolidCube(1.0);
	glPopMatrix();
	}

void Cabina::dibujarPiso()
	{
	glPushMatrix();
	glScalef(CABINA_W, CABINA_W, 0.01);
	glutSolidCube(1.0);
	glPopMatrix();
	}


void Cabina::dibujarChaponLateral()
	{
	glPushMatrix();
	glScalef(VENTANA_W, CABINA_H, 0.01);
	glutSolidCube(1.0);
	glPopMatrix();
	}

void Cabina::dibujarTecho()
	{
	glBegin(GL_TRIANGLE_FAN);
	glVertex3f(0.0, 0.0, CABINA_H+VENTANA_H+TECHO_H);
	glVertex3f(CABINA_W/2, CABINA_W/2, CABINA_H+VENTANA_H);
	glVertex3f(-CABINA_W/2, CABINA_W/2, CABINA_H+VENTANA_H);
	glVertex3f(-CABINA_W/2, -CABINA_W/2, CABINA_H+VENTANA_H);
	glVertex3f(CABINA_W/2, -CABINA_W/2, CABINA_H+VENTANA_H);
	glVertex3f(CABINA_W/2, CABINA_W/2, CABINA_H+VENTANA_H);
	glEnd();
	}

void Cabina::dibujar(int tiempoDurEscena){
	
	
	/*if (camaraEncabina && camara!=0)
		this->camara->lookat();*/
	/*for(int i=0;i<4;i++) {
	glRotatef(i*90.0,0.0,0.0,1.0);
	this->dibujarSeccion();
	}*/

	glPushMatrix();

	dibujarTecho();

	glPushMatrix();
	glTranslatef(CABINA_W/2, 0.0, VENTANA_H/2);
	glRotatef(90.0, 0.0, 1.0, 0.0);
	glRotatef(90.0, 0.0, 0.0, 1.0);
	dibujarChaponLateral();
	glPopMatrix();

	glPushMatrix();
	glTranslatef(-CABINA_W/2, 0.0, VENTANA_H/2);
	glRotatef(90.0, 0.0, 1.0, 0.0);
	glRotatef(90.0, 0.0, 0.0, 1.0);
	dibujarChaponLateral();
	glPopMatrix();

	glPushMatrix();
	glTranslatef(0.0, -CABINA_W/2, VENTANA_H/2);
	glRotatef(90.0, 1.0, 0.0, 0.0);
	dibujarChaponLateral();
	glPopMatrix();


	glPushMatrix();
	glTranslatef(0.0, CABINA_W/2, VENTANA_H/2);
	glRotatef(90.0, 1.0, 0.0, 0.0);
	dibujarChaponLateral();
	glPopMatrix();

	glPushMatrix();
	glTranslatef(CABINA_W/2, -CABINA_W/2, 1.5);
	glRotatef(90.0, 0.0, 1.0, 0.0);
	dibujarJuntura();
	glPopMatrix();
	
	glPushMatrix();
	glTranslatef(-CABINA_W/2, -CABINA_W/2, 1.5);
	glRotatef(90.0, 0.0, 1.0, 0.0);
	dibujarJuntura();
	glPopMatrix();
	
	glPushMatrix();
	glTranslatef(-CABINA_W/2, CABINA_W/2, 1.5);
	glRotatef(90.0, 0.0, 1.0, 0.0);
	dibujarJuntura();
	glPopMatrix();

	glPushMatrix();
	glTranslatef(CABINA_W/2, CABINA_W/2, 1.5);
	glRotatef(90.0, 0.0, 1.0, 0.0);
	dibujarJuntura();
	glPopMatrix();

	dibujarPiso();

	glPopMatrix();
}

void Cabina::ponerCamara(Camara* camara) {
	if(camara) {
		this->camara = camara;
		//this->camara->setEye(0.0,0.0,CAMARA_H);
		//this->camara->setCentre(15.0,0.0,CAMARA_H); //TODO pasar a constante
		//this->camara->setUp(0.0,0.0,1.0);
	}
}

void Cabina::quitarCamara() {
	this->camara = 0;
}

Camara* Cabina::getCamara() const
	{
	return this->camara;
	}